<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Grid Extend</title>
    <!-- grid.all.min.css, grid.all.min.js -->
    <link rel="stylesheet" href="../../builds/merged/bsgrid.all.min.css"/>
    <script type="text/javascript" src="../../plugins/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="../../builds/js/lang/grid.zh-CN.min.js"></script>
    <script type="text/javascript" src="../../builds/merged/bsgrid.all.min.js"></script>
</head>
<body style="background-color: #fff;">
<table id="searchTable">
    <tr>
        <th w_index="ID" width="3%;">ID</th>
        <th w_index="XH" width="5%;">XH</th>
        <th w_index="ID" width="5%;">ID</th>
        <th w_index="CHAR" w_align="left" width="15%;">CHAR</th>
        <th w_index="TEXT" w_align="left" width="27%;">TEXT</th>
        <th w_index="DATE" width="15%;">DATE</th>
        <th w_index="TIME" width="15%;">TIME</th>
        <th w_index="NUM" width="5%;">NUM</th>
        <th w_render="operate" width="10%;">Operate</th>
    </tr>
</table>
<script type="text/javascript">
    //extend init grid methods
    $.bsgrid.forcePushPropertyInObject($.fn.bsgrid.defaults.extend.initGridMethods, 'extend_init', function (gridId, options) {
        console.log('extend init method.');
    });
    // extend before render grid methods
    $.bsgrid.forcePushPropertyInObject($.fn.bsgrid.defaults.extend.beforeRenderGridMethods, 'extend_before_render_grid', function (parseSuccess, gridData, options) {
        console.log('extend before render grid method.');
    });
    // extend render per column methods, no matter blank column or not blank column
    $.bsgrid.forcePushPropertyInObject($.fn.bsgrid.defaults.extend.renderPerColumnMethods, 'extend_render_per_column', function (record, rowIndex, colIndex, tdObj, trObj, options) {
        var val = gridObj.getRecordIndexValue(record, gridObj.getColumnModel(colIndex).index);
        if (val.length > 30) {
            tdObj.css('background-color', 'blue');
        } else if (val.length < 5 && !isNaN(parseInt(val)) && parseInt(val) < 95) {
            tdObj.css('background-color', 'green');
        }
        console.log('extend render per column method.');
    });
    // extend render per row methods, no matter blank row or not blank row, after render per column methods
    $.bsgrid.forcePushPropertyInObject($.fn.bsgrid.defaults.extend.renderPerRowMethods, 'extend_render_per_row', function (record, rowIndex, trObj, options) {
        if (rowIndex % 2 == 0) {
            trObj.find('td').css('background-color', 'pink');
        }
        console.log('extend render per row.');
    });
    // extend after render grid methods
    $.bsgrid.forcePushPropertyInObject($.fn.bsgrid.defaults.extend.afterRenderGridMethods, 'extend_after_render_grid', function (parseSuccess, gridData, options) {
        console.log('extend after render grid method.');
    });

    var gridObj;
    $(function () {
        gridObj = $.fn.bsgrid.init('searchTable', {
            //autoLoad: false,
            url: 'data/json.jsp',
            pageSizeSelect: true,
            pageSize: 10
        });
    });

    function operate(record, rowIndex, colIndex, options) {
        return '<a href="#" onclick="alert(\'ID=' + gridObj.getRecordIndexValue(record, 'ID') + '\');">Operate</a>';
    }
</script>
</body>
</html>